using System.Collections.Generic;
using FlexCell;
using Infragistics.Win.UltraWinChart;
using Infragistics.Win.UltraWinGrid;
using Infragistics.Win.UltraWinScrollBar;
using Infragistics.Win.UltraWinTabControl;

namespace PluginFrame
{
	public interface IPcrExperimentProjectService
	{
		void LoadExperimentProjectManager();

		bool ChooseProjectFromManager(ref IPcrExperimentProject cellProject, IPcrExperimentProject defaultProject, IChannelConfiguration[] channelConfiguration, PcrSystemType systemType, IPcrExperiment pcrExperiment);

		string LoadExperimentProjectEditor(string projectFileName, bool isAllowToChangeChannelSettings);

		string LoadExperimentProjectEditor(IPcrExperimentProject pcrExperimentProject, bool isAllowToChangeChannelSettings, bool isOnlyEditProgram, bool isNewProject);

		void CheckProjectPasswordMatch(IPcrExperimentProject pcrExperimentProject);

		IPcrExperimentProject OpenPcrExperimentProject();

		string SaveAsExperimentProject(IPcrExperimentProject pcrExperimentProject, string fileName);

		void SaveExperimentProject(IPcrExperimentProject pcrExperimentProject);

		IPcrExperimentProject LoadExperimentProjectFile(string projectFileName);

		IPcrExperimentProject CreateNewProjectFromEditor(PcrSystemType systemType);

		Grid CreateAbsoluteItemGrid(IPcrExperimentProject experimentProject, Grid mItemGrid);

		Grid CreateAlleleItemGrid(IPcrExperimentProject experimentProject, Grid mItemGrid);

		UltraTabControl CreateItemGridTabControl();

		void RefreshAbsoluteItemGridContent(Grid mItemGrid, IPcrExperimentProject experimentProject, bool isLockSelection);

		void RefreshAlleleItemGridContent(Grid mItemGrid, IPcrExperimentProject experimentProject, bool isLockSelection);

		void RefreshItemGridContent(Grid mItemGrid, IPcrExperimentProject experimentProject, bool isLockSelection);

		void RefreshAbsoluteGridTargetNameDisplay(Grid mItemGrid);

		bool CheckAvailableProgramSegment(IPcrProgram pcrProgram);

		IPcrExperimentProject CreateNewEmptyProject();

		IPcrExperimentProject CreateNewEmptyProject(PcrSystemType systemType);

		void DrawExperimentProgramCurve(UltraChart chartProgram, IPcrProgram pcrProgram, bool chartInitialization, UltraScrollBar scrollBar, bool isShowTitle, bool isShowRunningTime);

		void ClearProgramCurve(UltraChart chartProgram, UltraScrollBar scrollBar);

		void LoadProjectAnalysisParametersOption(List<IPcrExperimentProject> projects, PcrSystemType systemType, bool isShowAutoAnalysis);

		void GenerateProjectPropertyGrid(IPcrExperimentProject project, bool isCreate, bool isRefresh, bool isReadOnly, ref Grid propertyGrid);

		bool GenerateCrossTalkGrid(IPcrExperimentProject experimentProject, UltraGrid crossTalkGrid, bool isToRefreshGridValue, bool locked);

		bool RefreshCrossTalkValueInGrid(IPcrExperimentProject experimentProject, UltraGrid crossTalkGrid);

		UltraTabControl GenerateRuleTabControl(bool isLocked);

		bool RefreshRuleGrid(UltraGrid grdRule, IPcrExperimentProject pcrExperimentProject);

		bool SaveRuleGrid(UltraGrid grdRule, IPcrExperimentProject pcrExperimentProject);

		string EditExperimentProjectProgram(IPcrExperimentProject pcrExperimentProject);
	}
}
